package com.example.qxfw.nyqx.service;

import com.example.qxfw.common.entity.zy.AgriProduct;
import com.example.qxfw.mongodb.hy.entity.HyDocFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.List;

public interface AgriProductService {


    List<AgriProduct> listByParam(String productType, String time1, String time2, String name);

    List<AgriProduct> listByParam1(String time1, String time2, String productType);

    List<AgriProduct> listByParam2(String productName, String productType);

    List<AgriProduct> listByParam3(String productType, String time1, String time2, String smalltype, String name);

    AgriProduct saveProduct(AgriProduct agriProduct);

    Integer deleteById(String id);

    Integer update(AgriProduct agriProduct);

    /**
     * 农用天气预报的所有文档生成功能都是用该接口
     *
     * @param phase      期数：需要的格式为： String-->2023年001期
     * @param admin      签发人
     * @param title      标题（这里有三种类型：传递的参数请给012，0代表周农用气象预报，1代表月农用气象预报，2代表农业气象灾害预警）
     * @param tendencies 天气趋势
     * @param advice     提示与建议
     * @param tel        电话
     */
    String agriculturalWeatherForecast(String phase, String admin, String title, String tendencies, String advice, String tel, HttpServletResponse response) throws IOException;

    /**
     * 发育期预报产品生成
     *
     * @param cropName     作物名称
     * @param stationName  站点名称
     * @param growdateName growdatename
     * @param type         品种
     * @param dateTime     日期(对应计算结果文本框的数据) 格式为String 如：2023-08-29 00:00:00
     * @param date         年份
     * @param d            预报某一物候期出现的日期 : 如分蘖期
     * @param d1           前一物候期出现的日期 ：如分蘖期的上一期为苗期
     * @param a            前后物候期之间的有效积温
     * @param b            作物开始发育期的温度下限值
     * @param t            根据长期天气预报或气候资料所得到的预报期内的平均气温
     * @return
     */
    String developmentalForecasting(String cropName, String stationName, String growdateName, String type, String dateTime, String date, String d, String d1, String a, String b, String t, HttpServletResponse response) throws IOException;

    Integer queryId(String productName, String productType, Timestamp forecastTime, Timestamp makeTime, String maker);

    HyDocFile getDocById(String id);
}
